package cn.coisini.service;

import cn.coisini.model.common.dtos.Result;
import cn.coisini.model.common.enums.ResultEnum;
import cn.coisini.model.common.enums.SmsType;
import cn.coisini.model.dto.UserDto;
import cn.coisini.security.auth.AuthUser;
import jakarta.servlet.http.HttpServletRequest;

import java.io.IOException;
import java.util.Map;

/**
 * @author xiangshaw
 * Description: 权限认证
 */
public interface AuthService {

    // 用户注册
    Result<ResultEnum> register(UserDto userDto);
    // 身份认证
    Result<String> authenticate(AuthUser authUser, HttpServletRequest request) throws IOException;
    // 发送短信验证码（mode为接收方方式（具体的邮箱、手机号） 、类型）
    Result<ResultEnum> sendSms(String mode, SmsType smsType);
    // 获取用户信息以及权限数据
    Result<Map<String, Object>>  getUserInfo();
    // 获取验证码
    Result<Map<String, Object>> captcha() throws IOException;
    // 用户退出登录
    Result<ResultEnum> logout();
    // are you ok
    Result<String> hello();
}
